/*******************************************************************************
 * 版权所有 (C)2015, LINKO SEMICONDUCTOR Co.ltd
 *
 * 文件名称： interrupt.c
 * 文件标识：
 * 内容摘要： 中断服务程序文件
 * 其它说明： 无
 * 当前版本： V 1.0
 * 作    者： Howlet
 * 完成日期： 2015年11月5日
 *
 * 修改记录1：
 * 修改日期：2015年11月5日
 * 版 本 号：V 1.0
 * 修 改 人：Howlet
 * 修改内容：创建
 *
 * 修改记录2：
 * 修改日期：2021年8月25日
 * 版 本 号：
 * 修 改 人：HMG
 * 修改内容：
 *
 *******************************************************************************/
#include "hardware_config.h"
#include "hal_config.h"
#include "sn_driver.h"
#include "./applications/app_timer.h"
#include "app.h"

/*******************************************************************************
 函数名称：    void ADC0_IRQHandler(void)
 功能描述：    ADC0中断处理函数
 输入参数：    无
 输出参数：    无
 返 回 值：    无
 其它说明：
 修改日期      版本号          修改人            修改内容
 -----------------------------------------------------------------------------
 2020/8/5      V1.0           Howlet Li          创建
 *******************************************************************************/

uint16_t adc_collect[5];
uint8_t adc_cap_flag = 0;
void ADC0_IRQHandler(void)
{
	
	if (ADC0_IF & BIT0) //第一段采样完成中断
	{
		ADC0_IF |= BIT0; //清除第一段采样完成中断标志位
		adc_collect[0] 	= ADC0_DAT2;// ADC_CHANNEL_10 温度
		adc_collect[1]  = ADC0_DAT0;// ADC_CHANNEL_15  输入电压
		adc_collect[2]  = ADC0_DAT1; // ADC_CHANNEL_16  输出电压
		adc_collect[3]  = ADC0_DAT4;// ADC_CHANNEL_17   输出电流
		adc_collect[4]  = ADC0_DAT3; // ADC_CHANNEL_11   预充电
		adc_cap_flag = 1;
	}
}


/*******************************************************************************
 函数名称：    void UART0_IRQHandler(void)
 功能描述：    UART0中断处理函数
 输入参数：    无
 输出参数：    无
 返 回 值：    无
 其它说明：
 修改日期      版本号          修改人            修改内容
 -----------------------------------------------------------------------------
 2020/8/5      V1.0           Howlet Li          创建
 *******************************************************************************/
uint8_t UART_Value = 0;
extern void app_uart1_rx_byte(uint8_t data);
void UART1_IRQHandler(void)
{
	if (UART1_IF & UART_IF_SendOver) //发送完成中断
	{
		UART1_IF = UART_IF_SendOver;
		UART_Flag = 0;
	}
	if (UART1_IF & UART_IF_RcvOver) //接收完成中断
	{
		UART1_IF = UART_IF_RcvOver;
		UART_Value = UART1->BUFF;
		app_uart1_rx_byte(UART_Value);
	}
}
/*******************************************************************************
 函数名称：    void MCPWM_IRQHandler(void)
 功能描述：    MCPWM中断处理函数
 输入参数：    无
 输出参数：    无
 返 回 值：    无
 其它说明：
 修改日期      版本号          修改人            修改内容
 -----------------------------------------------------------------------------
 2020/8/5      V1.0           Howlet Li          创建
 *******************************************************************************/

void MCPWM_IRQHandler(void)
{
}

/*******************************************************************************
 函数名称：    void HALL_IRQHandler(void)
 功能描述：    HALL中断处理函数
 输入参数：    无
 输出参数：    无
 返 回 值：    无
 其它说明：
 修改日期      版本号          修改人            修改内容
 -----------------------------------------------------------------------------
 2020/8/5      V1.0           Howlet Li          创建
 *******************************************************************************/
void HALL_IRQHandler(void)
{
}

/*******************************************************************************
 函数名称：    void TIMER0_IRQHandler(void)
 功能描述：    TIMER0中断处理函数
 输入参数：    无
 输出参数：    无
 返 回 值：    无
 其它说明：
 修改日期      版本号          修改人            修改内容
 -----------------------------------------------------------------------------
 2020/8/5      V1.0           Howlet Li          创建
 *******************************************************************************/


void UTIMER0_IRQHandler(void) //定时器0捕获电压
{
	if (UTIMER_IF & BIT1) //判断UTimer0的CH1是否发生比较中断
	{
		UTIMER_IF = BIT1; //清除UTimer中断标志位
	}
	

}

/*******************************************************************************
 函数名称：    void TIMER1_IRQHandler(void)
 功能描述：    TIMER1中断处理函数
 输入参数：    无
 输出参数：    无
 返 回 值：    无
 其它说明：
 修改日期      版本号          修改人            修改内容
 -----------------------------------------------------------------------------
 2020/8/5      V1.0           Howlet Li          创建
 *******************************************************************************/
//extern void utimer0_500ms_callback(void);

extern uint32_t dacTimeCount;
extern uint8_t dbg_flg[5];
void UTIMER1_IRQHandler(void)
{
	if (UTIMER_IF & BIT4)
	{
		UTIMER_IF = BIT4; 
	}
		if (UTIMER_IF & BIT5)
	{
		UTIMER_IF = BIT5; 
	}
if (UTIMER_IF & BIT3)
 //判断UTimer0是否发生过零中断
	{
		UTIMER_IF = BIT3; //清除UTimer中断标志位
		//jiffies++;//500us
		utimer_date.minsec++;
		dacTimeCount++;

		if(utimer_date.minsec==500) 
		{
			if((utimer_date.minsec==500)||(utimer_date.minsec==250))
			{
				if(sys_timer==NULL)return ;
				sys_timer->timer_callback(sys_timer,NULL);
			}
			  dbg_flg[0]+=1;
				dbg_flg[1]+=1;
				dbg_flg[2]+=1;
				dbg_flg[3]+=1;
				utimer_date.minsec = 0;
				utimer_date.sec++;
			if(utimer_date.sec==60)
			{
				utimer_date.sec = 0;
				utimer_date.min++;
			if(utimer_date.min==60)
			{
				utimer_date.min = 0;
				utimer_date.hour++;
			}
			}
		}
	}

}

/*******************************************************************************
 函数名称：    void TIMER2_IRQHandler(void)
 功能描述：    TIMER2中断处理函数
 输入参数：    无
 输出参数：    无
 返 回 值：    无
 其它说明：
 修改日期      版本号          修改人            修改内容
 -----------------------------------------------------------------------------
 2020/8/5      V1.0           Howlet Li          创建
 *******************************************************************************/
void UTIMER2_IRQHandler(void)
{
}

/*******************************************************************************
 函数名称：    void TIMER3_IRQHandler(void)
 功能描述：    TIMER3中断处理函数
 输入参数：    无
 输出参数：    无
 返 回 值：    无
 其它说明：
 修改日期      版本号          修改人            修改内容
 -----------------------------------------------------------------------------
 2020/8/5      V1.0           Howlet Li          创建
 *******************************************************************************/

void UTIMER3_IRQHandler(void)
{


}
/*******************************************************************************
 函数名称：    void ENCODER0_IRQHandler(void)
 功能描述：    ENCODER1中断处理函数
 输入参数：    无
 输出参数：    无
 返 回 值：    无
 其它说明：
 修改日期      版本号          修改人            修改内容
 -----------------------------------------------------------------------------
 2020/8/5      V1.0           Howlet Li          创建
 *******************************************************************************/
void ENCODER0_IRQHandler(void)
{
}

/*******************************************************************************
 函数名称：    void ENCODER0_IRQHandler(void)
 功能描述：    ENCODER1中断处理函数
 输入参数：    无
 输出参数：    无
 返 回 值：    无
 其它说明：
 修改日期      版本号          修改人            修改内容
 -----------------------------------------------------------------------------
 2020/8/5      V1.0           Howlet Li          创建
 *******************************************************************************/
void ENCODER1_IRQHandler(void)
{
}

/*******************************************************************************
 函数名称：    void CMP_IRQHandler(void)
 功能描述：    比较器中断处理函数
 输入参数：    无
 输出参数：    无
 返 回 值：    无
 其它说明：
 修改日期      版本号          修改人            修改内容
 -----------------------------------------------------------------------------
 2020/8/5      V1.0           Howlet Li          创建
 *******************************************************************************/
void CMP_IRQHandler(void)
{

}

/*******************************************************************************
 函数名称：    void UART1_IRQHandler(void)
 功能描述：    UART1中断处理函数
 输入参数：    无
 输出参数：    无
 返 回 值：    无
 其它说明：
 修改日期      版本号          修改人            修改内容
 -----------------------------------------------------------------------------
 2020/8/5      V1.0           Howlet Li          创建
 *******************************************************************************/
//void UART1_IRQHandler(void)
//{
//}

/*******************************************************************************
 函数名称：    void SysTick_Handler(void)
 功能描述：    系统滴答定时中断
 输入参数：    无
 输出参数：    无
 返 回 值：    无
 其它说明：
 修改日期      版本号          修改人            修改内容
 -----------------------------------------------------------------------------
 2020/8/5      V1.0           Howlet Li          创建
 *******************************************************************************/
void SysTick_Handler(void)
{
}

/*******************************************************************************
 函数名称：    void SleepTimer_IRQHandler(void)
 功能描述：    休眠唤醒中断处理函数
 输入参数：    无
 输出参数：    无
 返 回 值：    无
 其它说明：
 修改日期      版本号          修改人            修改内容
 -----------------------------------------------------------------------------
 2020/8/5      V1.0           Howlet Li          创建
 *******************************************************************************/
void SleepTimer_IRQHandler(void)
{
	while (1)
		;
}

/*******************************************************************************
 函数名称：    void GPIO_IRQHandler(void)
 功能描述：    GPIO中断处理函数
 输入参数：    无
 输出参数：    无
 返 回 值：    无
 其它说明：
 修改日期      版本号          修改人            修改内容
 -----------------------------------------------------------------------------
 2020/8/5      V1.0           Howlet Li          创建
 *******************************************************************************/
void GPIO_IRQHandler(void)
{
}

/*******************************************************************************
 函数名称：    void I2C0_IRQHandler(void)
 功能描述：    I2C0中断处理函数
 输入参数：    无
 输出参数：    无
 返 回 值：    无
 其它说明：
 修改日期      版本号          修改人            修改内容
 -----------------------------------------------------------------------------
 2020/8/5      V1.0           Howlet Li          创建
 *******************************************************************************/
void I2C0_IRQHandler(void)
{
}

/*******************************************************************************
 函数名称：    void SPI0_IRQHandler(void)
 功能描述：    SPI0中断处理函数
 输入参数：    无
 输出参数：    无
 返 回 值：    无
 其它说明：
 修改日期      版本号          修改人            修改内容
 -----------------------------------------------------------------------------
 2020/8/5      V1.0           Howlet Li          创建
 *******************************************************************************/
void SPI0_IRQHandler(void)
{
}

extern struct can_dev_t  *comm_dev;
void CAN_IRQHandler(void)
{
	u8 reg_sr = 0;
	reg_sr = CAN_INTR; //读取中断状态寄存器
	
	if(reg_sr & 0X02)  //发送完毕当前帧
	{
		
	//	My_CAN_Send_Msg_IR(0x003,0,0,can_par.TX,8);
	}
	if(reg_sr & 0x80)  //总线错误中断
	{
		//can_par.rx_sta  |=  0X80;
		
	}
	if(reg_sr & 0x40)  //丢失仲裁，改成接收模式
	{
		if(CAN_TXERR > 127)
		{

		}else
		{

		}
	}
	if(reg_sr & 0X20)//反复进入错误状态或错误总是超规定值
	{
		//can_par.rx_sta = CAN_SR;
		if(CAN_TXERR > 127)
		{

		}else
		{

		}
	} 
	if(reg_sr & 0X04)//CAN_SR.7 或者 CAN_SR.6 有变化
	{
		
	}	

	if(reg_sr & 0x01)//RFIFO 有新的数据被接收到
	{
		//can_receive_msg(&( can_par.id),&(can_par.ide),&(can_par.rtr),can_par.RX) ;
		if(comm_dev->rx_msg_func(comm_dev)==0)
		{
			return;
		}
	}
	
	
	
}

/************************ (C) COPYRIGHT LINKO SEMICONDUCTOR **********************/
/* ------------------------------END OF FILE------------------------------------ */
